package paidaxing.blog.post.service;

import paidaxing.blog.common.result.PageResult;
import paidaxing.blog.post.dto.request.TagRequestDTO;
import paidaxing.blog.post.dto.response.TagResponseDTO;
import paidaxing.blog.post.dto.PostDTO;

/**
 * 标签服务接口
 */
public interface TagsService {

    /**
     * 分页查询标签
     * 
     * @param page 页码
     * @param size 每页大小
     * @return 标签分页结果
     */
    PageResult<TagResponseDTO> getTags(Integer page, Integer size);
    
    /**
     * 创建标签
     * 
     * @param tagRequestDTO 标签请求DTO
     * @return 标签响应DTO
     */
    TagResponseDTO createTag(TagRequestDTO tagRequestDTO);
    
    /**
     * 更新标签
     * 
     * @param tagId 标签ID
     * @param tagRequestDTO 标签请求DTO
     * @return 标签响应DTO
     */
    TagResponseDTO updateTag(Long tagId, TagRequestDTO tagRequestDTO);
    
    /**
     * 删除标签
     * 
     * @param tagId 标签ID
     * @return 是否成功
     */
    boolean deleteTag(Long tagId);
    
    /**
     * 根据标签ID获取文章列表
     * 
     * @param tagId 标签ID
     * @param page 页码
     * @param size 每页大小
     * @return 文章分页结果
     */
    PageResult<PostDTO> getPostsByTag(Long tagId, Integer page, Integer size);
}